package com.bub.pay.core.manager.merchant;

import com.bub.pay.core.entity.domain.SysPerm;
import com.bub.pay.core.entity.domain.SysRole;
import com.bub.pay.core.entity.dto.merchant.MerchantRoleAddPermDTO;
import com.bub.pay.core.entity.dto.merchant.MerchantRoleSelectDTO;
import com.bub.pay.core.entity.vo.merchant.MerchantRoleSelectVO;
import com.bub.pay.core.entity.vo.merchant.PermsOfRoleVO;

import java.util.List;

public interface MerchantRoleManager {

    /**
     * 获取所有存在的角色
     * @return
     */
    List<SysRole> allRoles();


    /**
     * 查询角色
     * @param dto
     * @return
     */
    List<MerchantRoleSelectVO> selectMerchantRole(MerchantRoleSelectDTO dto);

    /**
     * 添加角色
     * @param role
     * @return
     */
    int insertRoleSelective(SysRole role);

    /**
     * 删除角色  只做逻辑删除将del_flag更新为1
     * @param id
     * @return
     */
    int deleteRoleByPrimaryKey(Long id);

    /**
     * 编辑角色
     * @param sysRole
     * @return
     */
    int updateRole(SysRole sysRole);

    /**
     * 获取角色的所有权限
     * @param roleId
     * @return
     */
    List<SysPerm> getPermOfRole(Long roleId);

    /**
     * 获取平台的所有权限
     * @param platformId
     * @return
     */
    List<SysPerm> getPermOfPlatform(Integer platformId);

    /**
     *
     * @param roleId
     * @return
     */
    List<PermsOfRoleVO> getPermsOfRoleIsContainsInPlatformAllPerms(Long roleId);


    /**
     * 给指定角色设置权限
     * @param dto
     * @return
     */
    int setPermForRole(MerchantRoleAddPermDTO dto);




}
